# Python 数据类型转换示例

print("=" * 50)
print("Python 数据类型转换")
print("""
1. 数字类型转换：int()、float()、complex()
2. 序列类型转换：str()、list()、tuple()、set()
3. 字典类型转换：dict()
4. 布尔类型转换：bool()
5. 进制转换：bin()、oct()、hex() 和 int() 的进制转换功能
6. 字符与ASCII码转换：chr() 和 ord()
7. 实用转换示例：如列表推导式进行批量转换
8. 错误处理：处理转换过程中可能出现的异常
""")
print("=" * 50)

# 1. 数字类型之间的转换
print("\n1. 数字类型转换")
print("-" * 20)

# int() 转换为整数
print("int() 转换:")
print("int(3.14) =", int(3.14))          # 3
print("int('123') =", int('123'))        # 123
print("int(True) =", int(True))          # 1
print("int(False) =", int(False))        # 0

# float() 转换为浮点数
print("\nfloat() 转换:")
print("float(10) =", float(10))          # 10.0
print("float('3.14') =", float('3.14'))  # 3.14
print("float(True) =", float(True))      # 1.0

# complex() 转换为复数
print("\ncomplex() 转换:")
print("complex(2, 3) =", complex(2, 3))  # (2+3j)
print("complex('1+2j') =", complex('1+2j'))  # (1+2j)

# 2. 序列类型之间的转换q
print("\n\n2. 序列类型转换")
print("-" * 20)

# str() 转换为字符串
print("str() 转换:")
print("str(123) =", str(123))            # '123'
print("str(3.14) =", str(3.14))          # '3.14'
print("str([1, 2, 3]) =", str([1, 2, 3]))  # '[1, 2, 3]'

# list() 转换为列表
print("\nlist() 转换:")
print("list('hello') =", list('hello'))  # ['h', 'e', 'l', 'l', 'o']
print("list((1, 2, 3)) =", list((1, 2, 3)))  # [1, 2, 3]
print("list({'a': 1, 'b': 2}) =", list({'a': 1, 'b': 2}))  # ['a', 'b']

# tuple() 转换为元组
print("\ntuple() 转换:")
print("tuple([1, 2, 3]) =", tuple([1, 2, 3]))  # (1, 2, 3)
print("tuple('hello') =", tuple('hello'))      # ('h', 'e', 'l', 'l', 'o')

# set() 转换为集合
print("\nset() 转换:")
print("set([1, 2, 2, 3]) =", set([1, 2, 2, 3]))  # {1, 2, 3}
print("set('hello') =", set('hello'))            # {'h', 'e', 'l', 'o'}

# 3. 字典相关转换
print("\n\n3. 字典相关转换")
print("-" * 20)

# dict() 转换为字典
print("dict() 转换:")
print("dict([('a', 1), ('b', 2)]) =", dict([('a', 1), ('b', 2)]))  # {'a': 1, 'b': 2}
print("dict(a=1, b=2) =", dict(a=1, b=2))  # {'a': 1, 'b': 2}

# 4. 布尔类型转换
print("\n\n4. 布尔类型转换")
print("-" * 20)

print("bool() 转换:")
print("bool(1) =", bool(1))        # True
print("bool(0) =", bool(0))        # False
print("bool('') =", bool(''))      # False
print("bool('hello') =", bool('hello'))  # True
print("bool([]) =", bool([]))      # False
print("bool([1, 2]) =", bool([1, 2]))  # True

# 5. 进制转换
print("\n\n5. 进制转换")
print("-" * 20)

num = 42
print("十进制 42:")
print("二进制:", bin(num))         # '0b101010'
print("八进制:", oct(num))         # '0o52'
print("十六进制:", hex(num))       # '0x2a'

# 从其他进制转换为十进制
print("\n其他进制转十进制:")
print("二进制 '101010' 转十进制:", int('101010', 2))  # 42
print("八进制 '52' 转十进制:", int('52', 8))          # 42
print("十六进制 '2a' 转十进制:", int('2a', 16))       # 42

# 6. 字符与ASCII码转换
print("\n\n6. 字符与ASCII码转换")
print("-" * 20)

print("chr() 和 ord() 转换:")
print("chr(65) =", chr(65))        # 'A'
print("chr(97) =", chr(97))        # 'a'
print("ord('A') =", ord('A'))      # 65
print("ord('a') =", ord('a'))      # 97

# 7. 实用转换示例
print("\n\n7. 实用转换示例")
print("-" * 20)

# 字符串数字转数值
str_nums = ['1', '2', '3', '4', '5']
int_nums = [int(x) for x in str_nums]
print("字符串列表转整数列表:")
print("原列表:", str_nums)  # ['1', '2', '3', '4', '5']
print("转换后:", int_nums)  # [1, 2, 3, 4, 5]

# 数值列表转字符串列表
float_nums = [1.1, 2.2, 3.3]
str_floats = [str(x) for x in float_nums]
print("\n浮点数列表转字符串列表:")
print("原列表:", float_nums)    # [1.1, 2.2, 3.3]
print("转换后:", str_floats)    # ['1.1', '2.2', '3.3']

# 处理用户输入
print("\n处理用户输入:")
user_input = "123"
number = int(user_input)
print(f"用户输入 '{user_input}' 转换为数字: {number}, 类型: {type(number)}")

# 8. 错误处理示例
print("\n\n8. 错误处理示例")
print("-" * 20)

try:
    result = int('abc')
except ValueError as e:
    print("转换错误:", e)
    print("无法将 'abc' 转换为整数")

try:
    result = float('3.14.15')
except ValueError as e:
    print("转换错误:", e)
    print("无法将 '3.14.15' 转换为浮点数")

print("\n" + "=" * 50)
print("数据类型转换示例结束")
print("=" * 50)
